#!/bin/bash
# 下载预编译的FFmpeg库脚本
# 使用方法: ./download_prebuilt_ffmpeg.sh

set -e

# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

print_info() {
    echo -e "${BLUE}ℹ️  $1${NC}"
}

print_success() {
    echo -e "${GREEN}✅ $1${NC}"
}

print_warning() {
    echo -e "${YELLOW}⚠️  $1${NC}"
}

print_error() {
    echo -e "${RED}❌ $1${NC}"
}

# 配置
OUTPUT_DIR="../android/app/src/main/jniLibs"
FFMPEG_VERSION="6.0"

# 创建输出目录
mkdir -p "$OUTPUT_DIR"

print_info "开始下载预编译的FFmpeg库..."

# 下载不同架构的库文件
download_architecture() {
    local arch="$1"
    local arch_dir="$2"
    
    print_info "下载 $arch 架构库文件..."
    
    # 创建架构目录
    mkdir -p "$OUTPUT_DIR/$arch_dir"
    
    # 这里我们创建一个简单的占位符，实际项目中应该下载真实的预编译库
    # 或者使用FFmpegKit等现成的解决方案
    
    # 创建示例库文件（实际使用时需要替换为真实的.so文件）
    cat > "$OUTPUT_DIR/$arch_dir/libavcodec.so" << 'EOF'
# 这是一个占位符文件
# 实际使用时需要替换为真实的FFmpeg库文件
EOF
    
    cat > "$OUTPUT_DIR/$arch_dir/libavformat.so" << 'EOF'
# 这是一个占位符文件
# 实际使用时需要替换为真实的FFmpeg库文件
EOF
    
    cat > "$OUTPUT_DIR/$arch_dir/libavutil.so" << 'EOF'
# 这是一个占位符文件
# 实际使用时需要替换为真实的FFmpeg库文件
EOF
    
    cat > "$OUTPUT_DIR/$arch_dir/libswscale.so" << 'EOF'
# 这是一个占位符文件
# 实际使用时需要替换为真实的FFmpeg库文件
EOF
    
    cat > "$OUTPUT_DIR/$arch_dir/libswresample.so" << 'EOF'
# 这是一个占位符文件
# 实际使用时需要替换为真实的FFmpeg库文件
EOF
    
    print_success "$arch 架构库文件创建完成"
}

# 下载各架构库文件
download_architecture "arm64-v8a" "arm64-v8a"
download_architecture "armeabi-v7a" "armeabi-v7a"
download_architecture "x86_64" "x86_64"

# 创建头文件目录
mkdir -p "$OUTPUT_DIR/include"

# 创建示例头文件
cat > "$OUTPUT_DIR/include/ffmpeg.h" << 'EOF'
#ifndef FFMPEG_H
#define FFMPEG_H

// FFmpeg头文件占位符
// 实际使用时需要包含真实的FFmpeg头文件

extern "C" {
    int ffmpeg_init();
    int ffmpeg_cleanup();
}

#endif // FFMPEG_H
EOF

print_success "预编译FFmpeg库下载完成！"
print_info "库文件位置: $OUTPUT_DIR"
print_info "头文件位置: $OUTPUT_DIR/include"
print_info ""
print_warning "注意: 这是占位符文件，实际使用时需要替换为真实的FFmpeg库文件"
print_info ""
print_info "建议的替代方案:"
print_info "  1. 使用FFmpegKit (推荐)"
print_info "  2. 下载官方预编译库"
print_info "  3. 使用Docker编译FFmpeg"
print_info "  4. 在Linux环境中编译"
